开源,是一条历史悠久的长河,一个 6 年的周期,相对这条长河很短;但一个 6 年的周期,却能让一段人生因开源而改变,李凌的成长就是其一。2016-2021 年,李凌完成了从一个纯「开源小白」向 Apache 顶级项目 PMC 成员的转变,期间他在 OpenResty、Apache APISIX、Kubeshpere 等社区留下了不同的贡献「印记」。也正是这些「印记」,让他感悟了什么是开源、什么是开源产品、什么是开源商业化。腾源会 WeOpen Talk 栏目本期对话嘉宾——Apache APISIX PMC 成员、Shopify 中国区首位工程师李凌。他将带我们回顾这 6 年的成长经历与那些重要的所思。
1
从开源小白到 Apache APISIX PMC 成员
李凌与开源的结缘,得回到 2015 年 10 月,从开源一个 lua-aes 的加解密库开始。当时李凌在 HelloTalk 这家公司为出海业务搭建底层基础架构。在众多技术工具中选型时,他发现了 OpenResty 这套基于 Nginx 与 Lua 的高性能开源框架。因为其简单性和易用性,命中了团队 95% 以上的需求,所以其团队很快在自身的生产环境、业务架构中基于 OpenResty 搭建了应用和基础服务。到了 2016 年,李凌逐渐开始接触、深入 OpenResty 开源社区,为社区为周边库贡献代码。这也是他迈入开源圈子的第一个阶段。那会儿还是「门外汉」的李凌,没有任何参与 Apache 这类大型开源社区的贡献经验。当时 OpenResty 开源社区的开发者比较少,生态和社区建设层面也不太完善。很多时候,我把代码发到 GitHub 上之后,也不怎么管,其中自己单独开发的一个库可能才 20 几个 Star,但是在 Github Traffic 里面,能看到每天有人在访问,让我觉得很兴奋。
这种半「自由」的状态,是李凌「半个脚迈入开源社区」的初始,也整整持续了 3 年时间。虽然这段经历不算「波澜壮阔」,但在 OpenResty 社区,李凌收获了开源之路上最宝贵的人脉——温铭(支流科技创始人,Apache APISIX PMC 主席,腾源会导师)和王院生(支流科技创始人、Apache APISIX PMC 成员、OpenResty 软件基金会联合创始人)。后来,温铭和王院生联合开始做 Apache APISIX 项目,这也成了李凌开源之路上至为关键的节点。作为后端基础架构的技术负责人,李凌在 2019 年年中做技术选型时,恰好遇上了 APISIX 的冒头。一开始,李凌接触 APISIX 的原因只是 HelloTalk 的业务架构中需要这类 API 网关工具。「但不得不说,其使用体验确实很好」,所以,李凌基于在 OpenResty 社区所沉淀的对开源贡献的经验,很快准备向 APISIX 社区贡献一些周边插件、测试案例或底层代码。但,这次的「准入」却远远没有那么简单。不久后,一个「小插曲」的出现成了李凌很为难忘的经历:我提交的第一个 Commit 就足足写了半个多月,一会写错这里,一会那里又不对。直到 2019 年 10 月 30 日,这个 Commit 才最终被 Merge(合并),这个日期我记得很清晰。
在 APISIX 社区,李凌所提交的第一个被合并的 Commit随着后续贡献的增多,又同步深入参与到社区讨论、项目的版本更新、新特性应用和布道等工作,2019 年 6 月到 2020 年 3 月,李凌进入了在社区里、在开源上成长最快的一段时间。李凌的成长与 APISIX 的成长,在步调上几乎是一致的。温铭曾经在回顾 APISIX 从 0 到 1 的发展时提过, 这个项目于 2019 年 6 月开源,7 月加入 CNCF 全景图,10 月进入 Apache 孵化器,截至 12 月共计 17 个 committer,分别来自 16 家不同的公司……「社区化」是 APISIX 成功的很重要的因素之一,同时「社区化」也让像李凌这样的技术人,获得最大的「滋养」。伴随价值贡献的不断加大,李凌成为了 APISIX 社区中第一位非初始的 Committer,接着又成为第一个被投票选举出的 PMC 成员。站在现在的时间节点上,李凌感慨:从一个小白成长为 PMC 成员,如果没有那些「受挫」的经历,以及像温铭、院生这样的 Mentor,我可能没有办法在开源领域真正 on boarding。这几年,因为一直在开源社区或独立开发者社区的缘故,李凌培养出一种认知——程序员一定要去接触业务,无论是不是在做开源,还是仅仅只敲代码。因为,开源项目本身依然是个产品,它的内核不是技术,而是产品本身。「当你把开源项目看作一个产品时,你就会带着运营产品的理念,去思考如何做好开源。」这是李凌通过实践得出的观点。去年,他作为中国首位工程师加入了全球最受欢迎的电商 SaaS 企业之一的 Shopify 。在选择 Shopify 的逻辑背后,李凌最看中的就是其在「产品化」和「全球化」上的领先实践和能力。进入 Shopify 的头几天,李凌最深刻的感知就是,海外企业对 SaaS 的使用程度极高,海外的软件服务市场也相对更为成熟,例如一天的工作流中,Shopify 团队基本会用到上十款的 SaaS 工具。也得受益于在 Shopify 这家全球化的工作经历,李凌眼中的 Shopify 是一家典型的从开源(Ruby on Rails)走出来的商业公司,并且它们积极拥抱和回馈开源社区。因此,李凌在采访中,也用了自己总结的一句话来描述 Shopify 这家公司的特点:「A Positive-Sum SaaS company that worship techniques instead of substance, and port OpenSource to commerce!(崇尚技术而非物质、从开源走向商业、打造正和共赢的 SaaS 公司)」Shopify 内部的大会也经常强调,是开源的文化造就了今日公司的成就。李凌也特别受到其内部对开源观念的鼓舞,他说他们内部经常会说:「As a team that greatly benefits from open-source software, we need to contributed back to the community.(作为一个从开源软件中获益匪浅的团队,我们需要为社区做出贡献)」。受到这种理念的影响,李凌也越来越喜欢从 SaaS 实践和产品化的视角,来反观开源商业化。他认为:第一,开源项目或开源社区成长的核心关键是人,做好一个开源社区的关键就是要足够有多样化,吸纳足够多(多样化)的人来使用,这样项目(产品)才能听到更多的反馈,推动项目不断地打磨。因为,执行产品的是机器,用你产品的是人。
从 2019 年开始到现在,李凌在 Apache 社区的实践持续了整整 3 年时间。他看过国内很多开源项目在 Apache 社区的成长,也看到一些项目在社区治理时,存在的问题:相对于产品本身,开发者更重视代码本身,认为开发者在社区,需要 Contribute 代码才算合格的贡献者。但是,很多国际大型开源社区运作文化,如 Apache Way 反而会更看重项目的综合表现能力,例如项目的技术品牌、用户与应用增长、产品理念、社区活动等维度的发展,这种文化也不仅仅鼓励开发者们去社区贡献代码,而是更鼓励与开发者、用户一起共建社区和生态,鼓励开发者贡献更「性感」的一些周边库、辅助类工具(技术文档、白皮书)等,让这些更丰富的内容促进社区的多样性。第二,一个好的开源项目千万不要有太重的「技术范儿」,做产品的核心很大程度上的目标是要有变现,对于开源项目也是一样,千万不要做没有商业变现能力的开源产品,否则产品容易失去生命力。
当下很多 SaaS 化产品,在开源侧基本都有替代品。一些开发者或企业把开源产品改一改、添加若干功能就能将其变成一个商业产品,说起来好像很简单,但做起来并不容易。李凌观察到,很多开源项目在设计、定位和发展过程中,主导人缺少对 SaaS 化的感知能力、变现能力。「这是一个综合的商业能力,你只了解 SaaS 产品不够,或只了解开源技术也不够,如何把 SaaS 化的敏锐力嫁接到开源项目和开源产品上,完全是一个综合的发展需要。」做产品,如何证明你的项目(产品)是有价值的?能赚到钱是很重要的衡量因素,因为「能不能挣钱」,在某种程度上证明了你的项目(产品)有没有解决人的痛点。但是,商业化最大的要义不只是挣钱。李凌对「商业化」这件事情充满了兴趣,他喜欢一个在海外流行的打造产品的行为,叫「#BuildInPublic」,这是一种用开源的理念去运作商业 SaaS 产品的行为,项目本身可以做到 Monetization but for Public Good 。李凌与Apache 首位华人董事吴晟的合影,他说「晟哥对其开源理念的形成也至关重要」第三,做开源社区和开源产品,一定要和各个生态打通,这样你的用户群众基础会丰厚一些,一定要多去招募、拥抱新的贡献者加入你的社区。
这个过程中很重要的一点是,降低贡献者加入社区的门槛。从李凌的观察和与社区的交流来看,很多「小白」或者「入门者」进入社区时都有恐惧心理,因为认知较少,他们通常都会一开始把社区想得特别高大上,会顾虑很多,如「我的 Contribution 会不会不能通过」、「我会不会犯错」。因此,做好开源社区的关键,是需要设立一批这样的人——类似向导,他们为新手们建立一些「引导」和「规范」。这也是李凌自身在 APISIX 社区成长过程中最大的受益。此外,Apache APISIX 社区也经常会向新入社区的伙伴们发一个 Good First Issue(新手引导),专门让新入者去 Debug 或 Comment ,以增强他们的信心。
通过这几年的开源实践,李凌对开源这件事的本质认知已经有了很大的不同。在访谈过程中,李凌感谢的温铭、王院生两人,在他的谈话中出现得极为频繁,他认为,导师的帮扶,是他一步步成长为 PMC 成员的最关键要素。李凌在广州与 Apache APISIX 社区伙伴们的合影(一排右5为李凌,左5为温铭,左2为王院生)因为我自己是受益于社区的,所以我现在非常勉励年轻人在步入职场早期就去做开源。
这和李凌的成长经历有关的。在其参与开源的早期,无论是技术上还是对开源的理解上,李凌自认为并不是「厉害的苗子」。但是深入之后他的深刻体会是,开源的参与门槛并不高——「哪怕你贡献一两行代码都是好的,这有谁做不了呢?壁垒在哪里?」。李凌带的一个实习生就曾受他的影响走上了开源。一年多前,这个实习生同他说,想去某互联网头部公司入职,问李凌是不是好的选择。李凌和他讲了很多,但总的方向就是鼓励他去做开源。不出意外,这个实习生在毕业一年后,就加入了 K8S 社区。「也许很多刚入门开源的乍一听会觉得,『怎么这么厉害』,刚毕业就能进 K8S 社区?这就是一种误区。实际上,开源社区的参与与融入并不复杂。」李凌解释说,这个实习生通过一段时间对 K8S 生态和社区文化的了解,发现了一个 Good First Issue,这个过程中,开源大神会带着他逐步深入社区,一步步地指导他怎么操作。李凌收获温铭老师赠予的一枚 Apache Committer 纪念勋章在社区中,李凌他们更多强调的是 Diversity ,而非代码。所以对于很多年轻人的辅导,李凌的心态也相较以前有了很大的转变。之前辅导一些年轻人的时候,李凌经常会心态崩溃,内心动不动就会想说「哎呀,你能不能快点搞完了」。但现在,李凌会变得非常耐心,「因为辅导我的人,他们就是这么耐心地教过我的。所以将心比心,对于现在的很多新人,我也会非常有耐心地指导他们慢慢做,不要急。」
所有这些心态的变化,让李凌形成一种认知——做开源不要想着急匆匆赚快钱,做开源是帮到别人。做开源和做 SaaS 产品是一样的,要真正解决用户需求和痛点,用户会自动找上门来问你这个东西能不能付费的。因为你写的代码一直沉淀在社区,沉淀到你 50 岁,可能还会有人看得到,还能够知道这个代码是你写的,只是概率性的问题而已。
李凌相信,开源的价值反馈,一定最终会反馈到每一个参与开源的人身上,不在早晚。■「WeOpen Talk」是腾源会全新上线的「对话开源」内容专栏,每周为读者呈现一期与尖峰开源人物的精彩对话内容。在「WeOpen Talk」栏目中,我们将深刻诠释开源先锋者们的开源精神、开源理念及其眼中的开源世界,深度挖掘开源领军者们在实践、参与开源过程中的有效方法论和最佳经验。看完本期 WeOpen Talk 栏目,你有什么想法或者疑问,欢迎在评论区留言。本周五 18 点前,点赞前 3 名将获得下方精美礼品之一哦!
腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。